package com.tongbo.mobilesafe.ui;

import com.baidu.mapapi.BMapManager;
import com.baidu.mapapi.GeoPoint;
import com.baidu.mapapi.MKAddrInfo;
import com.baidu.mapapi.MKBusLineResult;
import com.baidu.mapapi.MKDrivingRouteResult;
import com.baidu.mapapi.MKPoiResult;
import com.baidu.mapapi.MKSearch;
import com.baidu.mapapi.MKSearchListener;
import com.baidu.mapapi.MKTransitRouteResult;
import com.baidu.mapapi.MKWalkingRouteResult;
import com.baidu.mapapi.MapActivity;

import android.content.Intent;
import android.os.Bundle;
import android.telephony.SmsManager;
import android.util.Log;

public class QueryAddressActivity extends MapActivity {
	private static final String TAG = "QueryAddressActivity";
	private BMapManager mapManager;
	private MKSearch mMKSearch;
	private StringBuffer sb;
	private String sender;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		mapManager = new BMapManager(getApplication());
		mapManager.init("285B415EBAB2A92293E85502150ADA7F03C777C4", null);
		 
		mMKSearch = new MKSearch();
		mMKSearch.init(mapManager, new MySearchListener());

		Intent intent = getIntent();
		int longitude = (int) (1000000 * Double.parseDouble(intent
				.getStringExtra("longitude")));
		int latitude = (int) (1000000 * Double.parseDouble(intent
				.getStringExtra("latitude")));
		
		mMKSearch.reverseGeocode(new GeoPoint(latitude, longitude));
		sender = intent.getStringExtra("sender");
	}

	@Override
	protected boolean isRouteDisplayed() {
		return false;
	}

	@Override
	protected void onDestroy() {
		if (mapManager != null) {
			// 程序退出前需调用此方法
			mapManager.destroy();
			mapManager = null;
		}
		super.onDestroy();
	}

	@Override
	protected void onPause() {
		if (mapManager != null) {
			// 终止百度地图API
			mapManager.stop();
		}
		super.onPause();
	}

	@Override
	protected void onResume() {
		if (mapManager != null) {
			// 开启百度地图API
			mapManager.start();
		}
		super.onResume();
	}

	public class MySearchListener implements MKSearchListener {
		/**
		 * 根据经纬度搜索地址信息结果
		 * 
		 * @param result
		 *            搜索结果
		 * @param iError
		 *            错误号（0表示正确返回）
		 */
		@Override
		public void onGetAddrResult(MKAddrInfo result, int iError) {
			if (result == null) {
				return;
			}
			Log.i(TAG, "执行监听");
			sb = new StringBuffer();
			// 经纬度所对应的位置
			sb.append(result.strAddr).append("\n");
			/**
			 * // 判断该地址附近是否有POI（Point of Interest,即兴趣点） if (null !=
			 * result.poiList) { // 遍历所有的兴趣点信息 for (MKPoiInfo poiInfo :
			 * result.poiList) { sb.append("").append("\n");
			 * sb.append("名称：").append(poiInfo.name).append("\n");
			 * sb.append("地址：").append(poiInfo.address).append("\n");
			 * sb.append("经度：").append(poiInfo.pt.getLongitudeE6() /
			 * 1000000.0f).append("\n");
			 * sb.append("纬度：").append(poiInfo.pt.getLatitudeE6() /
			 * 1000000.0f).append("\n");
			 * sb.append("电话：").append(poiInfo.phoneNum).append("\n");
			 * sb.append("邮编：").append(poiInfo.postCode).append("\n"); //
			 * poi类型，0：普通点，1：公交站，2：公交线路，3：地铁站，4：地铁线路
			 * sb.append("类型：").append(poiInfo.ePoiType).append("\n"); } }
			 */
			// 发动短信
			SmsManager smsmanager = SmsManager.getDefault();
			smsmanager.sendTextMessage(sender, null,sb.toString(), null, null);
			Log.i(TAG, sb.toString());
		}

		/**
		 * 驾车路线搜索结果
		 * 
		 * @param result
		 *            搜索结果
		 * @param iError
		 *            错误号（0表示正确返回）
		 */
		@Override
		public void onGetDrivingRouteResult(MKDrivingRouteResult result,
				int iError) {
		}

		/**
		 * POI搜索结果（范围检索、城市POI检索、周边检索）
		 * 
		 * @param result
		 *            搜索结果
		 * @param type
		 *            返回结果类型（11,12,21:poi列表 7:城市列表）
		 * @param iError
		 *            错误号（0表示正确返回）
		 */
		@Override
		public void onGetPoiResult(MKPoiResult result, int type, int iError) {
		}

		/**
		 * 公交换乘路线搜索结果
		 * 
		 * @param result
		 *            搜索结果
		 * @param iError
		 *            错误号（0表示正确返回）
		 */
		@Override
		public void onGetTransitRouteResult(MKTransitRouteResult result,
				int iError) {
		}

		/**
		 * 步行路线搜索结果
		 * 
		 * @param result
		 *            搜索结果
		 * @param iError
		 *            错误号（0表示正确返回）
		 */
		@Override
		public void onGetWalkingRouteResult(MKWalkingRouteResult result,
				int iError) {
		}

		@Override
		public void onGetBusDetailResult(MKBusLineResult arg0, int arg1) {
		}
	}
}
